package org.ekingstar.qd.service.impl;

import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.ekingstar.qd.domain.QdDomain;
import org.ekingstar.qd.domain.QdFormula;
import org.ekingstar.qd.service.CRelationService;

/**
 * 表关系业务处理
 * @author 
 */
public class CRelationServiceImpl implements CRelationService {
	@SuppressWarnings("unused")
	private HibernateTemplate hibernateTemplate;
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}
	
	@SuppressWarnings("unused")
	private JdbcTemplate jdbcTemplate;
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	
	/**
	 * @descripte 增加表关系，成功返回1，失败返回-1 
	 * @param strDomainId 主题ID号
	 * @param strExpr     表关系表达式
	 * @param strDescript 表关系描述
	 * @return int
	 */
	public int addRelation(String strDomainId,String strExpr,String strDescript){
		int retInt = -1;
		try{
			if(strDomainId!=null && !"".equals(strDomainId.toString().trim()) && strExpr!=null && !"".equals(strExpr.toString().trim())){
				QdFormula qdFormula = new QdFormula();
				
				QdDomain qdDomain = new QdDomain();
				qdDomain.setId(strDomainId);
				qdFormula.setTQdDomain(qdDomain);
				
				qdFormula.setDescript(strDescript);
				qdFormula.setExpr(strExpr);
				
				hibernateTemplate.save(qdFormula);
				
				retInt = 1;
			}
		}catch(Exception e){
			e.printStackTrace();
			retInt = -1;
		}
		return retInt;
	}
	
	
	/**
	 * @descripte 修改表关系，成功返回1，失败返回-1
	 * @param relationId  表关系ID号
	 * @param strDomainId 主题ID号
	 * @param strExpr     表关系表达式
	 * @param strDescript 表关系描述
	 * @return int
	 */
	public int updateRelation(String relationId,String strDomainId,String strExpr,String strDescript){
		int retInt = -1;
		try{
			if(relationId!=null && !"".equals(relationId.toString().trim()) && strDomainId!=null && !"".equals(strDomainId.toString().trim()) && strExpr!=null && !"".equals(strExpr.toString().trim())){
				QdFormula qdFormula = (QdFormula)hibernateTemplate.get(QdFormula.class, relationId);
				if(qdFormula!=null && qdFormula.getId()!=null && !"".equals(qdFormula.getId().toString().trim())){
					QdDomain qdDomain = new QdDomain();
					qdDomain.setId(strDomainId);
					qdFormula.setTQdDomain(qdDomain);
					
					qdFormula.setDescript(strDescript);
					qdFormula.setExpr(strExpr);
					
					hibernateTemplate.update(qdFormula);
					
					retInt = 1;
				}				
			}
		}catch(Exception e){
			e.printStackTrace();
			retInt = -1;
		}
		return retInt;
	}
	

	/**
	 * @descripte 删除表关系，删除成功返回1，否则返回-1
	 * @param relationId  表关系ID号
	 * @return int
	 */
	public int deleteRelation(String relationId){
		int retInt = -1;
		try{
			if(relationId!=null && !"".equals(relationId.toString().trim())){
				QdFormula qdFormula = (QdFormula)hibernateTemplate.get(QdFormula.class, relationId.toString().trim());
				if(qdFormula!=null && qdFormula.getId()!=null && !"".equals(qdFormula.getId().toString().trim())){
					hibernateTemplate.delete(qdFormula);
					retInt = 1;
				}
			}
		}catch(Exception e){
			e.printStackTrace();
			retInt = -1;
		}
		return retInt;
	}
	
	
	/**
	 * @descripte 获取表关系
	 * @param relationId  表关系ID号
	 * @return QdFormula
	 */
	public QdFormula getRelation(String relationId){
		QdFormula qdFormula = null;
		try{
			if(relationId!=null && !"".equals(relationId.toString().trim())){
				qdFormula = (QdFormula)hibernateTemplate.get(QdFormula.class, relationId.toString().trim());				
			}
		}catch(Exception e){
			e.printStackTrace();
			qdFormula = null;
		}
		return qdFormula;
	}
	
	/**
	 * @descripte 通过主题ID获取表关系
	 * @param strDomainId  主题ID号
	 * @return QdFormula
	 */
	public QdFormula getRelationByDomainId(String strDomainId){
		QdFormula qdFormula = null;
		try{
			if(strDomainId!=null && !"".equals(strDomainId.toString().trim())){
				String hql = " from QdFormula a where a.TQdDomain.id='"+strDomainId.toString().trim()+"' ";
				List<QdFormula> ret = hibernateTemplate.find(hql);
				if(ret!=null && ret.size()>0){
					qdFormula = ret.get(0);
				}							
			}
		}catch(Exception e){
			e.printStackTrace();
			qdFormula = null;
		}
		return qdFormula;
	}
	

}
